#ifndef AUX_ERRNO_H
#define AUX_ERRNO_H
#ifdef __cplusplus
extern "C" {
#endif
#include <math.h>

enum
{
    ERRNO_FALSE                 = 0,
    ERRNO_SUCCESS               = 0,
    ERRNO_VALID                 = 0,
    ERRNO_TRUE                  = 1,
    ERRNO_FAIL,                     // 2
    ERRNO_INVALID,                  // 4
    ERRNO_NOTFIND,                  // 5
    ERRNO_REMOTE_CLOSED,            // 6
    ERRNO_TIMEOUT,                  // 7
    ERRNO_INCOMPLETE,               // 8
    ERRNO_MEMORYNOTENOUGH,          // 9
    ERRNO_MESSAGETOOLARGE,          // 10
    ERRNO_NOACK,                    // 11
    ERRNO_ACKNOTOK,                 // 12
    ERRNO_SENDFAIL,                 // 13
    ERRNO_FLATTENFAIL,              // 14
    ERRNO_PACKFAIL,                 // 15
    ERRNO_NOTEXIST,                 // 16
    ERRNO_DELAY,                    // 17
                                    //
    ERRNO_EWRONG,                   // 18
    ERRNO_EFATAL_MUTEX_UNLOCK,      // 19
    ERRNO_EPARAMETER_INVALID,       // 20
    ERRNO_EINIT_LOCK_FAIL,          // 21
    ERRNO_ELOCK_FAIL,               // 22
    ERRNO_EUNLOCK_FAIL,             // 23
    ERRNO_EINVALID_MUTEX,           // 24
    ERRNO_EMALLOC_FAIL,             // 25
    ERRNO_ECOND_WAIT_FAIL,          // 26
    ERRNO_EMEMORY_NOT_SUFFICIENT,   // 27
    ERRNO_ENOTINITIALIZED,          // 28
    ERRNO_EADDLISTENERFAIL,         // 29
    ERRNO_EADDMSGFAIL,              // 30
    ERRNO_ENOTLOCKED,               // 31
    ERRNO_ESTATUSERROR,             // 32
    ERRNO_EINTERNALERROR,           // 33
    ERRNO_EGETTIMEERROR,            // 34

    ERRNO_FUNCTION_USE_BEGIN          = 5000,
    ERRNO_FUNCTION_USE_END            = 10000,
    ERR_MAX
};
typedef int EErrNo;

#define ERR(errnum)  (abs((long)(errnum)) + ERR_MAX)
#define FERR(errnum) (abs((long)(errnum)) + ERRNO_FUNCTION_USE_BEGIN)
#ifdef __cplusplus
}
#endif
#endif